%%% Hints to the Doxygen program, which builds the Snow Dots documentation
% @defgroup singletons
% @defgroup superclasses
% @defgroup drawable
% @defgroup playable
% @defgroup queryable
% @defgroup computable
% @defgroup utilities

%
% @mainpage Welcome to Snow Dots
% @section intro Introduction
% @par
% Snow Dots defines nuts and bolts for writing and running Psychophysics
% experiments in Matlab. It extends the Tower of Psych, which models
% high-level organization and flow control for experiments, and provides
% graphical interfaces.
% @par
% Snow Dots also gets help from MGL for doing OpenGL graphics and timing.
% @par
% Read on for more explanation of what Snow Dots can do, or jump to one of
% the key parts of these docs:
%   - @ref picture
%   - @ref newtask
%   - <a href="inherits.html">Class Heirarchy</a>
%   .
% @section nutsBolts Features
% @par
% Snow Dots has a few key features:
%   - It uses Matlab's object-oriented programming features.
%   - It has a client-server model for distributing objects across Matlab
%   instances (and remote machines) via Ethernet.
%   - Its local vs. remote behaviors can be selected during configuration
%   (not just during experiment development).
%   - It reads and writes machine or rig specifics from and to XML files.
%   - It includes the mexHID() mex function for interacting with USB Human
%   Interface Devices and getting detailed timing data.
%   - It has a model for doing digital outputs, suitable for coordinating
%   with an external data collection system.
%   .
% @section naming Objects and Naming Conventions
% @par
% Snow Dots uses object-oriented design (classes and inheritance).  The
% following naming conventions aim to make it easier to understand the
% class inheritance heirarchy:
%   - Class names use the prefix "dots", and use
%   <a href="http://en.wikipedia.org/wiki/CamelCase">CamelCase</a>.  For
%   example, dotsDrawable.
%   - Method names and function names use lowerCamelCase.  For example,
%   mayDrawNow().
%   - "Singleton" classes, which can only exist one-at-a-time, use the
%   definite article "The" in their names.  For example, dotsTheScreen.
%   - High-level superclasses, which define abstract behaviors, use
%   the adjective "All" in their names.  Their names are also plural.  For
%   example, dotsAllManagedObjects.
%   - Low-level superclasses, which define behaviors for a family of very
%   similar subclasses, use a single-adjective name.  For example,
%   dotsDrawable.
%   - Low-level subclasses append a noun to the name of their superclass.
%   For example, dotsDrawableLines.
%   .
% @par
% Many Snow Dots classes inherit from Matlab's built-in handle class, so
% the handle documentation shows these conventions in action.
% @section origin Origin
% @par
% Snow Dots is a successor to <a
% href="http://dotsx.googlecode.com">dotsx</a>, which
% was written by Josh Gold and Ben Heasly at the University of
% Pennsylvania.  Snow Dots was designed and written by the same.
%